基本上ES可以分成下圖的幾種結構:
接下就對每個結構做介紹
節點(Node):
Elasticsearch是一個分佈式系統,它運行在一個或多個節點上。每個節點是一個獨立的Elasticsearch實例,可以是一台物理服務器或虛擬機器。而節點主要的工作就是傳遞數據、進行節點與節點之間的通訊,並且根據設定可以有不同類型的節點:
Master-eligible Node:
Data Node:
叢集(cluster):
索引(index):
分片(shard):
shard有以下功能:
-水平擴展資料的容量:
因為藉由多個primary或是多個replica shard並且分佈在不同的node上達到擴展,讓資料分散儲存,提高數據的儲存與處理能力。一個shard雖然沒有固定的大小,會隨著文檔的增加而成長,但是一個shard內最多只能存約20億的左右的文檔,多個shard意味索引能存更多的內容
-提升搜尋表現:
因為在多個node上有多個相同的replica shard,在搜尋的當下會同時搜尋所有replica shard,讓搜尋表現提升
-增加容錯與提升彈性:
primary shard 和 replica shard不會同時存在同一個node。因此有node掛掉時,該節點的primary shard同時毀損,此時其他node的replica shard 會晉升成primary shard,並保持叢集的健康。當然單node的叢集例外
那單節點是否就完全失去查找速度?
Elasticsearch 還是可以單個節點上使用多個 CPU 核心進行搜索和分析,從而提高效率
如果只有一個節點,那麼即使將索引分成多個分片,也無法實現分佈式搜索和分析。要實現分佈式搜索和分析,必須在多個節點之間分配分片
segment file:
文檔(Document):
那今天就大致上把ES整體架構上的基本知識都先交代了,雖然有一些細節草草帶過,但是之後如果有遇到需要解釋的部分會再一起補上。因為ES的底層是遵循lucene的,因此很多原理是相通的。
明天就可以準備開始安裝了~